package com.recordhistory.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.recordhistory.dao.LandDao;
import com.recordhistory.exception.ServiceException;
import com.recordhistory.model.Land;
import com.recordhistory.utils.CheckTool;
import com.recordhistory.utils.CommonTool;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * @author ：LX
 * 创建时间： 2019/6/18. 9:34
 * 地点：广州
 * 目的: 地点映射
 * 备注说明：
 */
@Service
public class LandService {

    @Resource
    private LandDao landDao;



    /**
     * 检查 地名映射
     * @param land
     */
    private void checkLand(Land land){
        if (land == null){
            throw new ServiceException("数据不能为空");
        }
        if (CheckTool.checkNull(land.getName())){
            throw new ServiceException("请填写古代地名");
        }
        if (CheckTool.checkNull(land.getNowName())){
            throw new ServiceException("请填写现代地名");
        }

    }


    /**
     * 新增 地点映射
     * @param land
     */
    @Transactional(rollbackFor = Exception.class)
    public void addLand(Land land){
        checkLand(land);

        land.setId(CommonTool.getUUId());
        land.setCreateDate(CommonTool.getTimestamp());
        land.setUpdateDate(CommonTool.getTimestamp());

        landDao.insert(land);
    }


    /**
     * 更新 地点映射
     * @param land
     */
    @Transactional(rollbackFor = Exception.class)
    public void updLand(Land land){
        checkLand(land);

        if (CheckTool.checkNull(land.getId())){
            throw new ServiceException("主键为空，不能更新");
        }

        land.setUpdateDate(CommonTool.getTimestamp());
        landDao.updateById(land);
    }

    /**
     * 删除 地点映射
     * @param id 地点映射 主键
     */
    @Transactional(rollbackFor = Exception.class)
    public void delLand(String id){
        if (CheckTool.checkNull(id)){
            throw new ServiceException("ID为空");
        }

        landDao.deleteById(id);
    }

    /**
     * 分页查询 地点
     * @param page
     * @return
     */
    public Page<Land> selectList(Page<Land> page) {
        if (page == null){
            page = new Page<>();
        }
        return landDao.selectList(page);
    }


    /**
     * 根据主键查询 地点
     * @param id 主键
     * @return
     */
    public Land selectById(String id){
        if (CheckTool.checkNull(id)){
            throw new ServiceException("ID为空");
        }
        return landDao.selectById(id);
    }

    /**
     * 分页 查询 地名
     * @param page
     * @param place 地名
     * @return
     */
    public Page<Land> selectListByPlace(Page<Land> page, String place){
        if (page == null){
            page = new Page<>();
        }
        return landDao.selectListByPlace(page, place);
    }
}
